/*qZ0LCglI6LEWX7Nd3VqD07DE9zK7eGDHb5GhTwi4fkc=*/
/*
 * @Descripttion:
 * @version:
 * @Author: Chendch
 * @Date: 2020-11-13 09:02:08
 * @LastEditors: Chendch
 * @LastEditTime: 2020-11-13 09:20:10
 */
function add(arg1, arg2, d) {
    let r1, r2, m, c;
    try {
        r1 = arg1.toString().split(".")[1].length;
    }
    catch (e) {
        r1 = 0;
    }
    try {
        r2 = arg2.toString().split(".")[1].length;
    }
    catch (e) {
        r2 = 0;
    }
    c = Math.abs(r1 - r2);
    m = Math.pow(10, Math.max(r1, r2));
    if (c > 0) {
        let cm = Math.pow(10, c);
        if (r1 > r2) {
            arg1 = Number(arg1.toString().replace(".", ""));
            arg2 = Number(arg2.toString().replace(".", "")) * cm;
        } else {
            arg1 = Number(arg1.toString().replace(".", "")) * cm;
            arg2 = Number(arg2.toString().replace(".", ""));
        }
    } else {
        arg1 = Number(arg1.toString().replace(".", ""));
        arg2 = Number(arg2.toString().replace(".", ""));
    }
    let result = (arg1 + arg2) / m;
    return typeof d === "number" ? (result).toFixed(d) : result;
}


function sub(arg1, arg2, d) {
    let r1, r2, m, n;
    try {
        r1 = arg1.toString().split(".")[1].length;
    }
    catch (e) {
        r1 = 0;
    }
    try {
        r2 = arg2.toString().split(".")[1].length;
    }
    catch (e) {
        r2 = 0;
    }
    m = Math.pow(10, Math.max(r1, r2));
    // n = (r1 >= r2) ? r1 : r2;
    let result = (arg1 * m - arg2 * m) / m;
    return typeof d === "number" ? (result).toFixed(d) : result;
}

function mul(arg1, arg2, d) {
    let m = 0, s1 = arg1.toString(), s2 = arg2.toString();
    try {
        m += s1.split(".")[1].length;
    }
    catch (e) {
    }
    try {
        m += s2.split(".")[1].length;
    }
    catch (e) {
    }
    let result = Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
    return typeof d === "number" ? (result).toFixed(d) : result;
}

function div(arg1, arg2, d) {
    let t1 = 0, t2 = 0, r1, r2;
    try {
        t1 = arg1.toString().split(".")[1].length;
    }
    catch (e) {
    }
    try {
        t2 = arg2.toString().split(".")[1].length;
    }
    catch (e) {
    }
    r1 = Number(arg1.toString().replace(".", ""));
    r2 = Number(arg2.toString().replace(".", ""));

    let result = (r1 / r2) * pow(10, t2 - t1);
    return typeof d === "number" ? (result).toFixed(d) : result;
}

export {
    add,
    sub,
    mul,
    div
}




/*qZ0LCglI6LEWX7Nd3VqD07DE9zK7eGDHb5GhTwi4fkc=*/
